package com.example.factoryModel.Interface;

import org.springframework.beans.factory.InitializingBean;

import java.util.HashMap;
import java.util.Map;

/**
 * 接口实现.
 * 动物有eat，call两种行为，猫狗分别有不同的实现
 */
public interface Animal extends InitializingBean {

    Map<String, Animal> MAPS = new HashMap<>();

    /**
     * 吃
     */
    void eat();

    /**
     * 叫
     */
    void call();

    /**
     * 动物名称
     * @return
     */
    String animalName();


    @Override
    default void afterPropertiesSet() throws Exception {
        synchronized (this) {
            MAPS.put(animalName(), this);
        }

    }
}
